Flash memory is an important and precious resource for many devices including customer premise equipment (CPE) devices such as set-top boxes (STB) and multimedia gateway devices. Flash memory is susceptible to wear from various uses and changes made to the memory such as code downloads, frequent modifications in a channel map, frequent guide data downloads, and others. Typically, when the flash memory of a device becomes worn out, the device will need to be discarded. In general, even if there is only a small change in code/guide/channel map data that applies to only a portion of flash memory, the entire flash memory of a device is re-flashed.
In some instances, a CPE device can be concurrently targeted for more than one code download. In such instances, the CPE device would continue downloading and toggling between the different code downloads. The continued downloading and toggling may continue for as long as concurrent spooling of different code downloads is not stopped or the CPE device fails to download further. Toggling between different code downloads can lead to an expedited wearing of flash memory as the initiation of a download leads to allocation and writing to the flash memory of a device, and a termination of a download leads to an erasure of the flash memory. Further, if an object size is less than the size of a single sector, then that particular sector may be subject to wear.
Another cause of repeated flash memory updates are code downloads which have corrupted code object(s) (e.g., authentication failure, cyclic redundancy check (CRC) failure, etc.). The corrupted code objects can result in multiple download retries and wearing of flash memory. In this scenario, same code object(s) are downloaded repeatedly as long as spooling of that code download is not stopped or the CPE device fails to download.
Modifications to a channel map and guide (e.g., electronic program guide (EPG)) data downloads may further lead to wear of flash memory. For example, information associated with channels supported by a CPE device is typically stored in flash memory, and each update to the channel map causes an erasure, allocation, and writing at the flash memory. Further, applications are periodically download and stored as guide data associated with supported channels in flash memory, and these periodic downloads may impact the wear of the flash memory as well as other operations and the overall performance of the CPE device.
Therefore, a need exists for improving methods and systems for updating flash memory at a CPE device.
Like reference numbers and designations in the various drawings indicate like elements.